const express = require('express');
const { body } = require('express-validator');
const router = express.Router();
const authController = require('../controllers/auth.controller');
const authMiddleware = require('../middlewares/auth.middleware'); // 引入认证中间件

// 输入验证中间件
const validateRegister = [
  body('username')
    .trim()
    .isLength({ min: 2, max: 30 })
    .withMessage('用户名长度必须在2-30个字符之间'),
  body('email')
    .trim()
    .isEmail()
    .withMessage('请输入有效的邮箱地址'),
  body('password')
    .isLength({ min: 6 })
    .withMessage('密码长度不能少于6个字符')
]

const validateLogin = [
  body('account')
    .trim()
    .notEmpty()
    .withMessage('请输入用户名或邮箱'),
  body('password')
    .notEmpty()
    .withMessage('请输入密码')
]

// 生成JWT token
const generateToken = (userId) => {
  return jwt.sign(
    { userId },
    process.env.JWT_SECRET || 'your-secret-key',
    { expiresIn: '7d' }
  )
}

// 注册新用户
router.post('/register', validateRegister, authController.register);

// 用户登录
router.post('/login', validateLogin, authController.login);

// 获取当前用户信息
router.get('/me', authMiddleware.authMiddleware, authController.getMe);

// 退出登录
router.post('/logout', authMiddleware.authMiddleware, authController.logout);

// 发送重置密码邮件
router.post('/forgot-password', [
  body('email')
    .trim()
    .isEmail()
    .withMessage('请输入有效的邮箱地址')
], authController.forgotPassword);

// 重置密码
router.post('/reset-password', [
  body('token') // 假设 token 在请求体中
    .notEmpty()
    .withMessage('重置密码token不能为空'),
  body('password')
    .isLength({ min: 6 })
    .withMessage('新密码长度不能少于6个字符')
], authController.resetPassword);

module.exports = router